package com.jy.rhin.parse;


import com.jy.rhin.infra.cda.XPath;
import lombok.extern.slf4j.Slf4j;
import org.seimicrawler.xpath.JXNode;
import org.springframework.stereotype.Component;
import java.util.Objects;
/**
 * @author WeiQ
 * @date 2023/3/30 10:54
 */
@Slf4j
@Component
public class DirectValueSelector implements Selector {

    @Override
    public String selectValue(JXNode root, XPath xPath) {
        String path = xPath.path();
        //text是xpath语法关键字 特殊处理
        if (path.endsWith("/text")) {
            path = path.substring(0, path.indexOf("/text"));
            JXNode jxNode = root.selOne(path);
            if (Objects.nonNull(jxNode)) {
                return jxNode.asElement().getElementsByTag("text").get(0).text();
            }
//            Element element = root.asElement();
//            for (String s : path.split("/")) {
//                if (!StringUtils.isEmpty(s) && !"text".equals(s)) {
//                    Elements elements = element.getElementsByTag(s);
//                    if (CollectionUtils.isEmpty(elements)) {
//                       // log.debug("配置路径错误，或改文档没有配置的路径标签:{}-{}", path, root);
//                        return null;
//                    }
//                    element = elements.get(0);
//                }
//            }
//            return element.getElementsByTag("text").get(0).text();
        } else {
            String realPath = basePath + path;
            try {
                JXNode jxNode = root.selOne(realPath);
                if (Objects.nonNull(jxNode)) {
                    return jxNode.asString();
                } else {
                    // log.debug("路径配置错，或文档不存在该节点:{}", realPath);
                }
            } catch (Exception e) {
                log.error("获取节点异常");
            }
        }
        return null;
    }

}
